<script>
    // 把平铺的数组数据转换成树形数据

// [
//   {id: "2b", pid: "", name: "人事部"}
//   {id: "2c", pid: "", name: "财务部"}
//   {id: "2d", pid: "2c", name: "财务核算部"}
//   {id: "2e", pid: "2c", name: "税务管理部"}
//   {id: "2f", pid: "2c", name: "薪资管理部"}
// ]
//       |
//       |
//       V
// [
//   {id: "2b", pid: "", name: "人事部",children: []},
//   {id: "2c", pid: "", name: "财务部", children: [
//     {id: "2d", pid: "2c", name: "财务核算部"}
//     {id: "2e", pid: "2c", name: "税务管理部"}
//     {id: "2f", pid: "2c", name: "薪资管理部"}
//   ]}
// ]

const arr = [
  {id: "2b", pid: "", name: "人事部"},
  {id: "2c", pid: "", name: "财务部", },
  {id: "2d", pid: "2c", name: "财务核算部"},
  {id: "2e", pid: "2c", name: "税务管理部"},
  {id: "2f", pid: "2c", name: "薪资管理部"}
]
function tranListToTreeData(arr) {
    const treeArr = []

    // 帮助快速确定上级
    const map = {}
    arr.forEach(item => {
        item.children = []
        map[item.id] = item
    })
    console.log(map)
    // 写代码
    arr.forEach(item => {
        // 对arr进行循环，对每一个元素item，如果
        // 1. item有上级元素pItem, 把item添加到pItem.children
        // 2. item没有上级元素（根据item.pid去找，找不到元素）， 添加到treeArr
        const pItem = map[item.pid]
        if(pItem) {
            pItem.children.push(item)
        } else {
            treeArr.push(item)
        }
    })
  return treeArr
}

const treeArr = tranListToTreeData(arr)
console.log(treeArr)
// [
//   {id: "2b", pid: "", name: "人事部",children: []},
//   {id: "2c", pid: "", name: "财务部", children: [
//     {id: "2d", pid: "2c", name: "财务核算部"}
//     {id: "2e", pid: "2c", name: "税务管理部"}
//     {id: "2f", pid: "2c", name: "薪资管理部"}
//   ]}
// ]

</script>